Element alignment for hangers in computer-aided design

ABSTRACT

Examples herein describe systems and methods for aligning elements, such as conduit, ductwork, and plumbing within a computer-aided design (“CAD”) application. A plugin can provide an element alignment option on a graphical user interface (“GUI”) of the CAD program. An anchor point from which to align elements is selected in the GUI so that the plugin can choose locations within a structure to run multiple elements in parallel alignment. The system can recommend an alignment plane based on the slopes of the selected multiple elements and provide a direction for a run of the multiple elements. The systems retrieve the specifications and parameters of each individual element to determine its spacing among the run of multiple elements. The run of multiple elements is displayed and manipulated by the plugin via the GUI.

CROSS-REFERENCE TO RELATED APPLICATIONS

This non-provisional application claims priority to provisionalapplication No. 62/891,778, titled “Element Alignment for Hangers inComputer-Aided Design,” filed Aug. 26, 2019, which is incorporated byreference in its entirety.

BACKGROUND

Computer-aided design (“CAD”) software allows users to design structuresfor construction, among other things. One type of CAD software isBuilding Information Modeling (“BIM”) software, which allows users toelaborately design three-dimensional structures. AUTODESK REVIT is onetype of BIM software that can be used to design complex buildings allthe way down to components and assemblies for use in a project. Forexample, a user can model an entire plumbing or electrical installationwithin a building.

BIM software such as REVIT allows the user to visually layout pipe,heating ventilation & air conditioning (“HVAC”) ductwork, or electricalconduit inside of building plans. However, spacing these items andaligning them on a hanger is painstaking and not practical. For one, itis difficult to see if the elements are aligned. In addition, differentelements have different spacing requirements. The user needs theelements to sit on a hanger for the user to accurately translate thedesign into real-world parts that can be ordered and installed at ajobsite. Hangers are an important part of laying out air conditioningducts or pipe. Existing software does not include any means ofaccurately laying out the elements on hangers, much less anydeterminations as to whether a potential layout would work or be up tocode. However, users are largely stuck with using REVIT and otheralready available CAD programs because of their ubiquitous adoptionwithin the industry.

BIM software often includes templates for conduit and other constructionassemblies, allowing the designer to lay out conduit in the plan. REVITtemplates for conduit and other components, such as plumbing or airconditioning ducts, can allow a user to draw a long run and easilyvisualize where the components will go. But simply drawing out the runsfor conduit, pipe, and ductwork may not take into consideration coderequirements for spacing electrical separate from plumbing or ductworkseparate from electrical, among others

Because of these limitations on current CAD and BIM technology, muchtime is spent in the field determining how to hang conduit, pipe, orducts based on other elements of the building. Sometimes a run of pipeor ducts must be rerouted, which can require reordering parts when thespecific lengths and bends of the CAD-generated pipe or duct assembly nolonger will suffice. Alternatively, the on-site construction can leaveplacement of ducts, pipe, and conduit completely up to field workers,who might place conduits too close to plumbing or ducts to close toplumbing such that it does not properly meet building codes.

Therefore, a need exists for a system that can resolve conduit, pipe,and duct work placement accurately and automatically within a BIMsystem, including within current BIM systems such as REVIT that do notnatively provide this functionality.

SUMMARY

The examples described herein specifically address technical problemsand limitations of REVIT and similar BIM software. The examples includea computing device, such as a personal computer, tablet, or laptop, thatexecutes a computer-aided design application such as REVIT. Theapplication can include an application programming interface (“API”)that interacts with a plugin that supplies additional functionality forspacing elements on the GUI in a way that is up to code and thatactually aligns the elements on an edge, such as a hanger. The plugincan include a spacing engine that executes on the computing device. Theplugin can also utilize a spacing table to determine how much space toput between elements.

Examples described herein include systems and methods for conduit, pipe,and ductwork placement in a CAD program, such as REVIT. The CAD programcan execute with a plugin that includes functionality for spacing, codeapplications, and collision detection in an example. The plugin canutilize conduit, pipe, and ductwork parameters stored in a database todetermine how to align conduit, pipe, and ductwork runs to comply withbuilding codes and to avoid collisions.

In one example, a system can provide an option in a graphical userinterface (“GUI”) to align conduit. The system for aligning conduitplacement is provided via a computer-aided design (“CAD”) application.The CAD program can generate the GUI and the GUI can receive inputs froma user. The system also incorporates a database for storing conduitalignment parameters. The conduit alignment parameters can includeconduit dimensions; local building and zoning codes related to conduit;conduit spacing requirements; gap requirements; fitting requirements;fitting dimensions; and the like. Similar information may be stored inthe database for plumbing alignment parameters and HVAC alignmentparameters. The system incorporates a processor for executinginstructions to perform stages. These stages include receiving a firstselection of an anchor element via the GUI. The anchor element can beone of a pipe, conduit, or ductwork. In another stage, the systemreceives a second selection, via the GUI, of multiple elements to alignwith the anchor element. The plugin, via the GUI, can visually align themultiple elements based on the anchor element and an edge. The visualalignment includes defining an alignment plane based on the edgeelement. The anchor element is then aligned with multiple elements inthe alignment plane. The processing automatically provides spacingbetween the multiple elements and the anchor element is a referencepoint for the spacing.

The alignment plane can be specified on the GUI to align vertically,horizontally, or along a specified plane. The horizontal alignment ofthe selected multiple elements can set parallel, center-to-center, fromthe selected anchor point. In a further example, fittings associatedwith the multiple elements are selected, via the GUI, and the processorretrieves specifications for the fittings from the database. Thesefittings are then displayed as a component of the multiple elements andthe processor determines the spacing requirements of the fittings basedupon parameters retrieved form the database. The multiple elements arethen spaced and aligned based upon the inclusion of the fittingsattached to the multiple elements. The processor determines thehorizontal and vertical alignment of the selected multiple elementsbased upon the parameters of the selected multiple elements, theirfittings, and the parameters of the anchor point. The system canrecommend an alignment plane based on the slopes of the selectedmultiple elements and provide a direction for a run of the multipleelements. In a further example, the plugin can incorporate a determinedbuffer into the horizontal spacing configuration for the selectedmultiple elements and the anchor point. In still a further example,vertical alignment of the selected multiple elements relative to theanchor point is determined by gravity.

In another example, a method for aligning element placement is providedvia a CAD application. The CAD application generates the GUI and the GUIreceives inputs from a user. In the method, a database for storeselement alignment parameters. The element alignment parameters caninclude elemental dimensions; local building and zoning codes related tothe elements; element spacing requirements; gap requirements; fittingrequirements; fitting dimensions; and the like. Similar information maybe stored in the database for plumbing alignment parameters, wiringparameters, and HVAC alignment parameters. The method incorporates aprocessor for executing instructions to perform stages. These stagesinclude receiving a first selection of an anchor element via the GUI.The anchor element can be one of a pipe, conduit, wiring, or ductwork.In another stage, the method receives a second selection, via the GUI,of multiple elements to align with the anchor element. The processor,via the GUI, can visually align the multiple elements based on theanchor element and an edge. The visual alignment includes defining analignment plane based on the edge element. The anchor element is thenaligned with multiple elements in the alignment plane. The processingautomatically provides spacing between the multiple elements and theanchor element is a reference point for the spacing.

Both the foregoing general description and the following detaileddescriptions are exemplary and explanatory only and are not restrictiveof the examples, as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an example flow chart for a method of aligning elements onhangers within a CAD application.

FIG. 2A is a sequence diagram of example steps for element alignment.

FIG. 2B is a flowchart of an example method for performing elementalignment in a BIM software environment.

FIG. 3A is an example illustration of a GUI screen for aligning hangerelements.

FIG. 3B is an example illustration of a GUI screen for aligning hangerelements.

FIG. 3C is an example illustration of a GUI pane for alignment settings.

FIG. 4 is an example illustration of a GUI screen for aligning hangerelements.

FIG. 5 is an example illustration of a GUI screen for aligning hangerelements.

FIG. 6 is an example illustration of a GUI screen for aligning hangerelements.

FIG. 7 is an example illustration of a GUI screen for aligning hangerelements.

FIG. 8 is an example system diagram including example components forautomatic alignment of runs of elements on hangers in a CAD environment.

DESCRIPTION OF THE EXAMPLES

Reference will now be made in detail to the present examples, includingexamples illustrated in the accompanying drawings. Wherever possible,the same reference numbers will be used throughout the drawings to referto the same or like parts.

In an example, an option is provided within a CAD or BIM program, suchas REVIT, to align elements for certain object types, such as conduit,ducts, or pipes, which are to be mounted on a structure. A plugin canprovide a button for running this functionality within a GUI where adesign layout is displayed. The design layout can include multiple partsand assemblies within, for example, a floor plan. It can be used tolayout objects for a construction project, for example.

The plugin can align elements for example in a model presented onscreen.The parameters for these elements are stored in a database. However,before merely placing the elements, the plugin can also check forcollisions, adjust spacing, and account for fittings where necessary.

FIG. 1 is an example flowchart for aligning elements in a CADapplication, such as REVIT. A plugin can cause REVIT to perform multiplestages that normally are not available within REVIT. For example, abutton can be presented on the GUI for aligning multiple parallelelements.

At stage 110, the GUI can receive a first selection of an anchorelement. This can be in response to selecting the alignment button. Forexample, the plugin can then cause the GUI to display a prompt to selectthe anchor element by clicking on an element to which the other elementswill align. The anchor element can be selected by the user, and can beone of a pipe, conduit, or a duct.

The plugin can make an API call to the application (e.g., REVIT) toretrieve a slope of the selected anchor element. The slope can be threedimensional in nature. This slope can be stored by the plugin for use inaligning the other elements.

The GUI can also prompt the user to select which elements will bealigned and receive that selection at stage 120. This can happen beforeor after stage 110, depending on the example. For instance, the user canbegin by selecting multiple elements at stage 120 and then click thebutton to align those elements, causing stage 110 to occur after stage120. In that example, stage 110 can be limited to anchor elements thatare part of the selection of stage 120. In either case, stage 120 caninvolve selecting multiple elements to align with the anchor element,such as by drawing a selection box around the elements or clicking theelements one at a time to add to a selected collection.

The selected multiple elements need not have the same slope as theanchor element in an example. However, the plugin can attempt to trimthe selection to multiple elements of a same type, such as conduit orpipe, in an example. This can ensure that other elements in theselection that do not actually need alignment can be ignored. In thatexample, the plugin can create an array of selected elements and thenuse API calls to return the element type for each element. The elementtypes can be, for example, conduit, plumbing, or ductwork. Based on themost prevalent the element type, the plugin can automatically reduce theselection to the multiple elements that have that prevalent elementtype. Alternatively, the plugin can cause the GUI to present a prompt tothe user for confirming that this reduction should occur. In oneexample, selected elements that are not elongated or have no slopeorientation can be automatically omitted by the plugin.

At stage 130, the plugin can then visually align the multiple elementson the GUI based on the anchor element. This can include the stages 140,150, and 160, in an example. The alignment can include changing a slopedimension to match a dimension of the slope of the anchor element in anexample. The coordinates of the elements can also be changed to alignwith the anchor element along an alignment plane in an example.

In one example, the GUI prompts the user to identify an alignment plane.This can include asking the user whether to align the elementshorizontally (X or Y), vertically (Z), or both. This selection candetermine which dimensions of the slope and coordinates change for theselected elements, relative to those of the anchor element. Retrievingand setting slopes and coordinates of any of the elements on the GUI canbe performed by the plugin through API calls to the CAD application.

At stage 140, the plugin can define the alignment fully or partiallybased on an edge element that the user selects. The user can be promptedto select or decline selection of the edge element as a third selectionin addition to those at stages 110 and 120. For example, the user canselect a hanger element as the edge element, providing an “edge” wherethe selected elements and anchor element will be aligned. Alternatively,the user can select the anchor element as the edge element. This cancause the other elements to be brought into the same alignment plane asthe anchor element, whereas selecting a different edge element can causeall of the elements to rest along that edge within the same alignmentplane.

The slope of the alignment plane can be specified by the user, as notedabove. For example, a prompt can allow the user to select betweenhorizontal, vertical (i.e., elevation), or both. In one example, theuser can also select to align to the top or bottom of the edge element.Alternatively, the GUI can allow the user to specify the alignment tofollow the anchor element (e.g., conduit), such that the slope of thealignment plane is the same as the anchor element relative to ground andthe anchor element lies within the alignment plane.

In another example, the alignment plane can be determined in part by theuser drawing a plane within the GUI. This can include creating arectangle at the desired angle, in an example. This can form thealignment slope. The alignment plane can then be virtually placed at therectangle or moved to the selected edge element while maintaining thesame alignment slope.

In one example, the user can select to not move the anchor element,making the anchor element also the edge element. This can be useful, forexample, when no hanger exists yet in the REVIT model. A user can thenhave the other elements align with the edge element on an alignmentplane based on gravity direction (e.g., bottom elevation) or some otheruser-defined alignment plane.

In another example, the alignment plane can be recommended based ondetermining like slopes of the multiple elements. For example, theplugin can determine that the slopes of like element types within theselection are within a threshold, such as 5%, from one another. Based onthat determination, the most common shared slope can be used for formingthe alignment plane. If no slopes are shared within the thresholddeviation, then the median slope can be used.

At stage 150, the plugin can cause the GUI to align the anchor elementand multiple selected elements on the alignment plane. This can includebringing the elongated elements to rest on the alignment plane whilealso making them parallel to the anchor element. To do this, the plugincan loop through each selected element and provide an API command tochange slope and location coordinates of the element. For example, eachelement can have an element ID that is retrieved as part of selectingthe element. Then the API command can include rotate or slope commandsfor that element ID. Another API command can set coordinates for theelement ID. The coordinates can include at least two dimensions that arethe same as the alignment plane, in an example. This means that, basedon alignment settings, the element will be moved or rotated such that itis parallel with the alignment plane or anchor element.

At stage 160, which can occur separately or as part of stage 150, theplugin can automatically provide spacing between the multiple selectedelements. The anchor element can act as the start point for the spacing.In this way, the anchor element can remain stationary (or snapped to anedge) while the other elements are moved to be spaced from the anchorelement. In one example, the spacing can occur along one of thedimensions of the alignment plane. The spacing can be dictated byalignment settings in an example. Spacing rules can be specific toelement type and can include spacing from center-to-center oredge-to-edge between adjacent elements. For example, different elementtypes such as conduit and pipe can have different spacing requirements.In addition, elements of the same type but with different diameters orthose made from different materials can also have different spacingrequirements. The spacing can also include rounding to a specifiedfraction of measurement unit and can include an additional pad or gap toensure appropriate spacing in an example. Padding can add a buffer tospacing values, in an example.

In one example, parallel portions of the can be moved while maintainingconnection to bends. For connected pieces, the API command can causemovement in a direction until the turn contacts the plane that theparallel portion has moved on. At that point, the GUI can shirk or growthe parallel piece such that the parallel piece still reaches and formsa turn, remaining in contact with the connected piece.

This method can result in, for example, spacing conduit or pipe withjust a few selections and clicks. These selected elements can be spacedin parallel to an anchor element along an edge element, such as ahanger. The process can change the slopes of the selected elementsrelative to the ground, a wall, or some other drawn-in plane. This canallow a user to easily manipulate elements within REVIT to bring theminto alignment in a way that conforms with code, rather than having topainstakingly place each element.

FIG. 2A is an example sequence diagram for alignment of elements for ahanger. At stage 210, a plugin can execute as part of a BIM program,such as REVIT, to provide an option on a GUI to align elements by firstdetermining an alignment type. This can include providing a button onthe GUI or a drop-down menu item. The GUI can provide a selection ofalignment types 215. The alignment types can be horizontal, vertical, orboth. The button can cause the system to determine a direction foraligning elements on a selected structure in accordance with theparameters of the elements.

At stage 220, the plugin can use the GUI to provide a number of anchorpoint options. The anchor point options can be an existing plane orelement, such as pipe, conduit, or another structure. The plugin canalso provide, within the GUI, the option for selecting an edge element,which can be a structure such as a hanger or a user-defined plane. Theplugin can also recommend via the GUI an anchor element based on theelement parameters. The GUI allows the user to select and determine theanchor element, such as by clicking the element, in an example.

At stage 230, a number of elements can be presented in the GUI. The usercan select one or more of these elements to model a run of elementswithin a structure. The GUI allows the user to select one or a pluralityof elements for a modeled run.

Furthermore, at stage 240, the plugin can retrieve parameters andspecifications of each of the selected elements in the selected run ofelements from a database of element specifications and parameters. Theelement specifications and parameters can allow the plugin to calculatespacing requirement for each element in the selected run of elements.For example, different element types such as conduit and pipe can havedifferent spacing requirements. In addition, elements of the same typebut with different diameters or those made from different materials canalso have different spacing requirements. These parameters and spacingrequirements can include fittings and other components associated withthe selected run of elements.

For adjacent elements, the controlling spacing can be the greater valueof the adjacent elements. For example, if two elements have differentspacing and pad values, the greater of those values can be used. The padcan be added to the spacing to determine where to set the coordinate ofthe first element relative to the adjacent second element.

Once the selected run of elements 230 and their respective parametersand specifications have been determined, the plugin can then determinethe direction of alignment of the selected run of elements within thestructure. The selected run of elements can be aligned horizontally,vertically, or at some other user-defined slope. The alignment spacingcan be based upon the parameters of the elements. At stage 255, if therun of elements is aligned horizontally, the plugin applies rulesrelated to fittings, specifications, and buffer requirements 265 of theselected run of elements 230. The plugin can align the elements inparallel relative to the anchor point, wherein the runs of elements 230are aligned center to center. For example, when a first element is theanchor point, the adjacent second element can receive the fulladjustment to move it to the correct distance from the first element.Then a third element on adjacent to the second element can be spaced inthe same direction from the second element, and so on until all of themultiple selected elements have been spaced out according to theparameters.

The GUI then displays the run of elements in the GUI with their newlocations and orientations.

At stage 260, if the run of elements 230 are to be aligned vertically,the plugin can apply similar rules for spacing, fittings, and buffers270. The run of elements is then aligned with respect to the directionof gravity or to a specified vertical alignment plane. Once the run ofelements is aligned, the plugin displays the run of elements in the GUI.

FIG. 2B is a flow chart depicting an example of the various stages of aconduit alignment process. While the steps in FIG. 2B focus on conduit,the elements aligned could also be wiring, pipes, duct work, plumbing,and the like. Beginning at stage 291, the plugin can provide an optionin the GUI to align elements, such as conduit, plumbing, or ductworkwithin a structure. These elements for alignment may already existwithin a modeled structure shown in the GUI.

At stage 292, the plugin can present to a user, via the GUI, an optionto select an alignment elevation. This can impact an automaticallygenerated alignment plane. The elements can be aligned horizontally,vertically, or to an edge. The plugin may further align the elementsbased on elevation, spacing, or both.

The GUI can display various elements within the structure of thebuilding that is being modeled. At stage 293, the user then has theoption at stage 293 of choosing an anchor point. The selection of ananchor point at stage 293 in effect can allow the user to choose anelement that will not be moved (along at least one direction relative tothe movement of other elements). The anchor element can be any kind ofconduit, pipe, plumbing, HVAC ductwork, or other elongated object. Theshape can be any cylinder, tube, square, or rectangular box, dependingon the example. The plugin can also allow for the selection of an edgeelement that the anchor element and other selected elements will snapto. The edge element can be a trapeze hanger, pillar, wall, or otherpiece of the structure.

Once the anchor point (and optionally the edge) has been selected, theplugin, via the GUI, allows for the selection of the run of elements tobe automatically aligned in stage 294. In on example, the user selects aplurality of elements 240 that require alignment for a conduit run, piperun, duct run, etc. Within the selected plurality of elements 240, eachof the elements can be the same size or different sizes, such asdifferent widths or circumferences. The selected plurality of elements240 can be aligned center to center on a horizontal axis.

The plugin is able to determine the spacing of the selected plurality ofelements by referring to a look up table and/or a database of parametersto determine specification for each of the elements to be aligned instage 295. The parameters that are stored in the lookup table and/ordatabase include parameters that are specific to each individualelement. The parameters associated with the selected plurality ofelements can include dimensions, spacing requirements, building codes,fitting requirements, tolerances, and the like.

The information gathered at stage 295 related to each individual elementof the selected plurality of elements is used by the plugin at stage 296to calculate and determine the individual spacing requirements of eachelement. At stage 296, the plugin applies the fitting and specificationrequirements for each individual element of the plurality of elements tobe aligned. Fittings can include adapters, gaskets, joints, valves, andthe like. Fittings can alter the spacing requirements of variouselements within a selected run of elements 240. Similar to stage 295,the plugin can look up the specifications and parameters for eachindividual fitting from the lookup table or database.

At stage 297, once the plugin has the specifications and parameters foreach individual element and associated fitting, the selected pluralityof elements the plugin must determine the orientation of the run ofelements. Therefore, the plugin determines the alignment elevation forthe selected plurality of elements. This selected plurality of elementscan be aligned horizontally, vertically, or to an edge element. If theselected plurality of elements is to be aligned vertically, the anchorelement may not be needed. Instead, the run of the selected plurality ofelements is run with respect to gravity. If the selected plurality ofelements is to be aligned horizontally, the anchor element is needed.

Having the specification and parameter associated with the selectedplurality of elements, the plugin can allow the plurality of elements toautomatically be aligned vertically, horizontally, or with respect to aselected edge element at stage 298. The aligned run of the selectedplurality of elements are aligned in parallel. The plugin can alsodetermine which slopes are the same for a selected plurality of elementsand recommend an alignment plane that is compatible with that slope. Theplugin can further determine the direction of the selected plurality ofelements. For vertically aligned selected plurality of elements, thealignment is based on gravity or specified alignment plane. If anelevation is not specified, the selected plurality of elements isaligned along a bottom elevation. Existing, connected runs of elementsare moved in the direction of the selected plurality of elements unlessa barrier is encountered. The connected runs of elements can shrink orgrow relative to the aligned selected plurality of elements.

Once the selected plurality of elements has been aligned, the GUIautomatically displays the aligned selected plurality of elements. Theplugin provides dynamic display and adjustment of the aligned selectedplurality of elements.

Turning now to FIG. 3A, an illustration of the GUI 300 for use with theplugin is illustrated. The GUI 300 can present a user with an option toselect an alignment elevation 310. The various runs of elements can bepresented to the user via the GUI. The GUI 300 allows the user to adjustthe point of view of the model. Each individual element has a specificset of parameters and specification that are available for review. Theelements can be aligned horizontally, vertically, or to an edge. Theplugin may further align the elements based on elevation, spacing, orboth.

Once the elevation has been selected, the plugin via the GUI displaysvarious elements within the structure of the building that is beingmodeled. The user then has the option of choosing an anchor point. Theselection of an anchor point can indicate which element should not moveso that the other selected elements can be moved in relation to thatstationary element. The element can be any kind of conduit, pipe,plumbing, HVAC ductwork, etc. The shape can be a cylinder, tube, square,rectangular box, etc. The selected anchor point can also be the edge ofa trapeze hanger, pillar, wall, or other piece of the structure.

FIG. 3B shows another portion of the GUI 300 where the user can setparameters 340 for the selected elements. These parameters can includespacings and offsets, which can be dictated by either user preference orcode. These spacings and offsets can be used by the plugin to inautomatically aligning elements in hangers.

FIG. 3C is an example illustration of a GUI pane 350 for alignmentsettings. These settings can be used by the plugin to automate alignmentof the selected elements. For example, an elevation alignment options355, 360 can allow a user to specify how to align elements. Option 355can activate or deactivate elevation alignment settings. When activated,option 360 can specify whether or not the selected elements should bealigned to an anchor element, such as conduit, or to a specified edge.For example, when option 360 is unchecked, the plugin will attempt toalign objects to an edge. An alignment type can specify aligning to thetop or bottom of an edge in an example.

Element (e.g., conduit) spacing settings can also be provided. Forexample, an option 365 to apply conduit spacing can cause the plugin touse particular spacing values and techniques when aligning the selectedelements. This can include spacing type options 370. In this example,center-to-center and edge-to-edge are provided as spacing measurementsfor adjacent elements. Different settings for rounding, padding(addition to spacing) or gap (distance between edges) can be applied. Aconfiguration button 375 can allow a user to modify spacing tables forelement types, in an example.

Additionally, alignment types such as elevation only, spacing only, orboth, can be provided.

FIG. 4 is an example illustration of a GUI screen for aligning hangerelements. In FIG. 4, the plugin, via the GUI, allows an anchor point 420to be selected. The plugin, via the GUI, also allows for the selectionof the run of elements 430 to be automatically aligned. The user canselect a plurality of elements 430 that require alignment for a conduitrun, pipe run, duct run, etc.

FIG. 5 is an example illustration of a GUI screen for aligning hangerelements. FIG. 5 illustrates a selection of a plurality of elements 510and an anchor point 520. The selected plurality of elements 510 can bealigned to an anchor point 520. Note the plurality of elements 510 canbe of different shapes, sizes, and orientations.

With the selected plurality of elements 510 to be aligned and the anchorpoint 520, 620 selected, the plugin can gather the specifications ofeach individual element.

FIG. 6 is an example illustration of a GUI screen for aligning hangerelements. In FIG. 6, the plugin references a database and/or look uptable 610 to gather parameters and specifications for each element, suchas those of FIG. 3B. The table 610 can be one example of a spacingtable. The spacing table can be two dimensional and track spacing valuesbetween element types with different widths, diameters, and/or materialconfigurations. In this example, the spacing table has columns and rowsthat are assigned to different width or diameter measurements. Theintersecting cell can represent the spacing between adjacent elementshaving the width or diameter of the respective row and column.

The spacing table can define spacing for different element sizes, withelements having different diameters also having different spacing rules.The padding setting can cause additional spacing to be added to thespacing defined in the spacing table, and a rounding setting can cause afinal spacing to be rounded to a nearest measurement. The plugin canalso import or export additional databases and lookup tables 610 whennew or different elements 510 are being aligned.

FIG. 7 is an example illustration of a GUI screen for aligning hangerelements. FIG. 7 illustrates the output of the plugin in an example.Once the parameters and specifications have been applied for eachelement 640, the selected plurality of elements 710 are aligned to ananchor point 720. The plugin allows the aligned selected plurality ofelements 710 to be rotated and viewed from various angles.

FIG. 8 includes an exemplary diagram of a system 800 in accordance withan example. REVIT 810 or another BIM program can execute on a computingdevice 805. The BIM program, such as REVIT 810, includes a GUI 808 usedto create and display a design layout. Using REVIT 800, designers cancreate models of nearly any type of physical object, including dwellingsand other structures. In one example, electrical, plumbing, or HVACassemblies can also be designed. Although REVIT 810 is used as anexample, the disclosure applies to other BIM or CAD programs as well.

The computing device 805 can be any processor-based device, such as apersonal computer, laptop, tablet, or cell phone. It can also include orbe part of a server in one example. The computing device 805 can displaythe REVIT 810 GUI 808 by executing a set of instructions stored locallyor remotely on a computer-readable medium. The computing device 805 canalso execute the plugin 832 in one example. In another example, theplugin 832 can be an application that executes remotely on a server thatis accessed by the computing device 805. The plugin 832 can be executedas part of REVIT 810 or another CAD or BIM application.

The plugin 832 can improve the GUI 808 of REVIT 810 or another BIMapplication. For example, the plugin 832 can allow the REVIT 810 GUI 808to display options and screens for automatically providing alignment ofa run of elements. For example, the GUI 808 can display screens forselecting a run of a plurality of elements to align. The user can modifythese on the GUI 808. The user can also select an anchor or referencepoint to which, the plurality of elements can be aligned.

In one example, a database 820 stores the element parameters 815. Theelement parameters 815 can be imported and exported into different REVIT808 projects in one example. The element parameters 815 can ensureproper element alignment and spacing based on different specifications,shapes, and sizes. For example, the element parameters 815 can accountfor part lengths, widths, bends, and connector information.

Any type of computing device can implement the database 820. In oneexample, the database 820 is part of computing device 805. In anotherexample, the database 820 is remotely accessible by the computing device805, such as over a network. The network can be a local area network, anenterprise network, or the Internet. In one example, multiple computingdevices 805 in an enterprise can remotely access the database 820 overthe network. This can allow for centralized storage of the elementparameters 415, allowing for some administrative users to optimally setthe parameters that are then available for other users to implement inprojects.

Using the API, REVIT 810 can execute custom methods for the plugin 832when certain events occur within REVIT 810. Custom methods can includenew procedures that are part of plugin 832. Events are generated when anaction is submitted to a REVIT 810 server for performance by REVIT 810.The plugin 832 can implement the events to cause REVIT 810 tocommunicate with the plugin 832. The plugin 832 then can execute custommethods for customized functionality.

Although a plugin 832 is used in a preferred example, in another examplethe same functionality is built into the BIM application itself. All ofthe examples still apply to that configuration.

Other examples of the disclosure will be apparent to those skilled inthe art from consideration of the specification and practice of theexamples disclosed herein. Though some of the described methods havebeen presented as a series of steps, it should be appreciated that oneor more steps can occur simultaneously, in an overlapping fashion, or ina different order. The order of steps presented are only illustrative ofthe possibilities and those steps can be executed or performed in anysuitable fashion. Moreover, the various features of the examplesdescribed here are not mutually exclusive. Rather any feature of anyexample described here can be incorporated into any other suitableexample. It is intended that the specification and examples beconsidered as exemplary only, with a true scope and spirit of thedisclosure being indicated by the following claims.

What is claimed is:
 1. A system for element alignment in acomputer-aided design (“CAD”) application, including: a database thatstores element parameters, including element sizes and spacingrequirements; a processor that executes instructions to perform stagescomprising: receiving a first selection of an anchor element on agraphical user interface (“GUI”), wherein the anchor element is one ofpipe, conduit, or a duct; receiving a second selection, on the GUI, ofmultiple elements to align with the anchor element; and visuallyaligning the multiple elements based on the anchor element, wherein thevisual alignment includes: defining an alignment plane based on an edgeelement; aligning the anchor element and multiple elements in parallelamong themselves on the alignment plane, wherein the anchor element andmultiple elements are not connected to each other; and automaticallyproviding spacing between the multiple elements, wherein the anchorelement is a start point for the spacing.
 2. The system of claim 1,wherein the alignment plane is based on a direction represented bygravity in combination with the edge element, wherein the edge elementis separately selected by the user.
 3. The system of claim 1, whereinthe alignment plane is based on an alignment direction selected on theGUI in combination with the edge element.
 4. The system of claim 1,wherein the alignment plane is based on a plane drawn by the user on theGUI, in combination with the edge element.
 5. The system of claim 1,wherein the alignment plane is recommended based on determining likeslopes of the multiple elements, and wherein the edge element is thesame as the anchor element.
 6. The system of claim 1, wherein thespacing between the multiple elements is based on a spacing table thatdefines spacing for different element sizes, wherein elements withdifferent diameters have different spacing rules.
 7. The system of claim6, wherein a padding setting causes additional spacing to be added tothe spacing defined in the spacing table, and a rounding setting causesa final spacing to be rounded to a nearest measurement.
 8. A method foraligning elements within a computer-aided design (“CAD”) application,comprising: receiving a first selection of an anchor element on agraphical user interface (“GUI”), wherein the anchor element is one ofpipe, conduit, or a duct; receiving a second selection, on the GUI, ofmultiple elements to align with the anchor element; and visuallyaligning the multiple elements based on the anchor element, wherein thevisual alignment includes: defining an alignment plane based on an edgeelement; aligning the anchor element and multiple elements in parallelamong themselves on the alignment plane, wherein the anchor element andmultiple elements do not touch one another; and automatically providingspacing between the multiple elements, wherein the anchor element is astart point for the spacing.
 9. The method of claim 8, wherein thealignment plane is based on a direction represented by gravity incombination with the edge element, wherein the edge element isseparately selected by the user.
 10. The method of claim 8, wherein thealignment plane is based on an alignment direction selected on the GUIin combination with the edge element.
 11. The method of claim 8, whereinthe alignment plane is based on a plane drawn by the user on the GUI, incombination with the edge element.
 12. The method of claim 8, whereinthe alignment plane is recommended based on determining like slopes ofthe multiple elements.
 13. The method of claim 8, wherein the spacingbetween the multiple elements is based on a spacing table that definesspacing for different element sizes, wherein elements with differentdiameters have different spacing rules.
 14. The method of claim 13,wherein a padding setting causes additional spacing to be added to thespacing defined in the spacing table, and a rounding setting causes afinal spacing to be rounded to a nearest measurement.
 15. Anon-transitory, computer-readable medium containing instructions foraligning elements in a computer-aided design application, theinstructions causing a processor to execute stages comprising: receivinga first selection of an anchor element on a graphical user interface(“GUI”), wherein the anchor element is one of pipe, conduit, or a duct;receiving a second selection, on the GUI, of multiple elements to alignwith the anchor element; and visually aligning the multiple elementsbased on the anchor element, wherein the visual alignment includes:defining an alignment plane based on an edge element; aligning theanchor element and multiple elements in parallel among themselves on thealignment plane, wherein the multiple elements do not touch one another;and automatically providing spacing between the multiple elements,wherein the anchor element is a start point for the spacing.
 16. Thenon-transitory, computer-readable medium of claim 15, wherein thealignment plane is based on a direction represented by gravity incombination with the edge element, wherein the edge element isseparately selected by the user.
 17. The non-transitory,computer-readable medium of claim 15, wherein the alignment plane isbased on an alignment direction selected on the GUI in combination withthe edge element.
 18. The non-transitory, computer-readable medium ofclaim 15, wherein the alignment plane is based on a plane drawn by theuser on the GUI, in combination with the edge element.
 19. Thenon-transitory, computer-readable medium of claim 15, wherein thespacing between the multiple elements is based on a spacing table thatdefines spacing for different element sizes, wherein elements withdifferent diameters have different spacing rules.
 20. Thenon-transitory, computer-readable medium of claim 19, wherein a paddingsetting causes additional spacing to be added to the spacing defined inthe spacing table, and a rounding setting causes a final spacing to berounded to a nearest measurement.